渲染器


1. 渲染器的说明

  • 渲染器就是设置所要返回的数据在浏览器的显示格式

  • 注意: 不要使用 JSONRenderer 除外的渲染器,因为容易出 BUG (通俗理解: 只使用 JSONRenderer 渲染器)

2. 局部渲染器

  • 局部渲染器的配置(即: renderer_classes = [渲染器, 渲染器])会覆盖掉该视图类在全局渲染器中的配置

  • renderer_classes = [渲染器, 渲染器]

# views.py

from .serializer import *
from .models import *
from rest_framework import viewsets

from rest_framework.renderers import JSONRenderer, BrowsableAPIRenderer, AdminRenderer


class BookViewSet(viewsets.ModelViewSet):
"""
        常用的渲染器:
            JSONRenderer: 显示JSON格式(即: 没有任何样式)
            BrowsableAPIRenderer: 使用 rest-framework 所提供的 html 模板显示 JSON 格式,默认显示格式
            AdminRenderer: 显示表格的形式
    """

# renderer_classes = [JSONRenderer, BrowsableAPIRenderer, AdminRenderer]  # 局部渲染器,同时使用 JSONRenderer、BrowsableAPIRenderer、AdminRenderer 渲染器
renderer_classes = [JSONRenderer]  # 该视图类只使用 JSONRenderer 渲染器

    queryset = Book.objects.all()
    serializer_class = BookSerializers

  • JSONRenderer 在浏览器的显示效果



  • BrowsableAPIRenderer 在浏览器的显示效果,默认显示格式



  • AdminRenderer 在浏览器的显示效果



3. 全局渲染器

  • 全局渲染器的设置作用于所有视图类

  • 可以通过设置局部渲染器来覆盖全局渲染器的设置

# settings.py

REST_FRAMEWORK = {
# "DEFAULT_AUTHENTICATION_CLASSES": ["app01.rf_auth.TokenAuth"],  # 全局认证
    # "DEFAULT_PERMISSION_CLASSES": ["app01.rf_permission.SVIPPermission"]  # 全局权限
    # "DEFAULT_THROTTLE_CLASSES": ["app01.rf_throttle.MyThrottle"],  # 全局频率

# "DEFAULT_RENDERER_CLASSES": ['rest_framework.renderers.JSONRenderer', 'rest_framework.renderers.BrowsableAPIRenderer', 'rest_framework.renderers.AdminRenderer']  # 全局渲染器
    "DEFAULT_RENDERER_CLASSES": ['rest_framework.renderers.JSONRenderer']  # 全局渲染器
}